package com.warmheart.service.sys;

import java.util.List;

import com.warmheart.base.page.BasePage;
import com.warmheart.base.page.PageInfo;
import com.warmheart.base.service.IBaseService;
import com.warmheart.entity.sys.SysDictBase;
import com.warmheart.model.DictCache;

/**
 * 
 * @ClassName: ISysDictBaseService
 * @Description: 数据字典IService，对应表名称为tb_sys_dict_base
 * 温馨提示：对外提供的接口，原则上这里只写自定义方法
 * @author ZhangJianyang
 * @date 2025-06-16 09:37:02
 *
 */
public interface ISysDictBaseService extends IBaseService<SysDictBase> {
    
    public SysDictBase getSysDictBaseLabel(SysDictBase dictBase);

    public SysDictBase getDictName(SysDictBase dictBase);

    public List<SysDictBase> getSysDictBaseList(Object dictType);

    /**
     * 获取字典类型的列表
     */
    public PageInfo<SysDictBase> queryTypeByList(BasePage page) throws Exception;

    /**
     * 字典类型添加
     * 
     * @param dictBase
     * @throws Exception
     */
    public void addTypeSave(SysDictBase dictBase) throws Exception;

    /**
     * 字典类型修改
     * 
     * @param dictBase
     * @throws Exception
     */
    public void updateTypeSave(SysDictBase dictBase, String oldDictType) throws Exception;

    /**
     * 字典类型删除
     * 
     * @param dictBase
     * @throws Exception
     */
    public void deleteDictType(SysDictBase dictBase) throws Exception;

    /**
     * 验证字典是否存在
     * 
     * @param dictBase
     * @return
     */
    public List<SysDictBase> checkSysDictBaseExist(SysDictBase dictBase);

    /**
     * 根据Type获取到字典类型
     * 
     * @param dictBase
     * @return
     */
    public SysDictBase queryByType(SysDictBase dictBase);

    /**
     * 获取多个字典值
     * 
     * @param dictBase
     * @return
     */
    public List<SysDictBase> getSysDictBaseLabels(SysDictBase dictBase);

    /**
     * 获取所有的字典值，用于缓存
     * 
     * @return
     */
    public List<DictCache> getDictForCaches();
}